package com.qimo.zzy.entity;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.Data;

@Data
public class ResultEntity {
    private Object code;//返回码
    private Object msg;//返回的提示消息
    private Object data;//返回的数据

    public ResultEntity(Object code, Object msg, Object data) {//构造方法
        this.data = data;
        this.msg = msg;
        this.code = code;
    }

    /**
     * Object 转JSON
     *
     * @param object 传入的object
     * @return Json
     */
    public static String toJson(Object object) {
        Gson gson = null;//新建Gson对象
        GsonBuilder gsonBuilder = new GsonBuilder();//新建Gson容器对象
        gsonBuilder.setPrettyPrinting();
        gson = gsonBuilder.create();//创建容器
        return gson.toJson(object);//调用方法返回Json
    }

    /**
     * 对数据库的操作（增删改）的返回，根据影响的行数，返回不同的结果
     *
     * @param res 影响的行数
     * @return String：Json类型
     */
    public static String success(int res) {
        if (res >= 1) {
            return toJson(new ResultEntity(0, "操作成功！", null));
        } else {
            return toJson(new ResultEntity(1, "操作失败！", null));
        }
    }

    public static String successlimit(int res) {
        if (res >= 1) {
            return toJson(new ResultEntity(0, "操作成功！", null));
        } else {
            return toJson(new ResultEntity(500, "接口访问超过限制", null));
        }
    }

    /**
     * 通用型返回结果，True：返回操作成功，False:返回操作失败！
     *
     * @param res boolean类型
     * @return String：Json类型
     */
    public static String success(boolean res) {
        if (res) {
            return toJson(new ResultEntity(0, "操作成功！", null));
        } else {
            return toJson(new ResultEntity(1, "操作失败！", null));
        }
    }

    /**
     * 对数据库的操作（查询）的返回
     *
     * @param data 数据
     * @return String：Json类型
     */
    public static String success(Object data) {
        return toJson(new ResultEntity(200, "查询成功！", data));
    }

    /**
     * 执行错误返回
     *
     * @param code 错误代码
     * @return String：Json类型
     */
    public static String fail(int code) {
        if (code == -10004) {
            return toJson(new ResultEntity(code, "内部错误！请将错误代码发给管理员", null));
        }else {
            return toJson(new ResultEntity(code, "查不到您想要的数据", null));
        }
    }
}
